
        <html>
			<head>
			     <title>浅析手机抓包方法实践 - Ms4dam0n</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/12467">http://drops.wooyun.org/tips/12467</a></h1>
				
      <p>
        <h1>0x00 摘要</h1>

<hr />

<p>在移动逆向分析以及 App 开发的时候，总会需要对其网络行为进行监控测试，本文总结一些抓包思路，并对其使用方法进行实践</p>

<p>笔者认为在抓包界，Wireshark 应该算是综合排名第一的工具（其实 Wireshark 自带的命令行工具 tshark 更牛逼）</p>

<p>本文总结记录了 5 种抓包方式，掌握其一即可进行实践，欢迎大家一起交流分享</p>

<!--more-->

<h1>0x01 基于 Wireshark</h1>

<hr />

<p><strong>实验步骤：</strong></p>

<h3>1.1 在电脑主机上使用<code>猎豹 Wifi</code>之类的工具，开启热点，将所要测试的手机连接该热点，记录其IP地址</h3>

<p><img src="http://static.wooyun.org//drops/20160126/2016012610102480192179.png" alt="Alt text" /></p>

<h3>1.2 使用 Wireshark 对以上 IP 地址进行捕获</h3>

<p>Capture——Options</p>

<p><img src="http://static.wooyun.org//drops/20160126/2016012610102532440247.png" alt="Alt text" /></p>

<p><img src="http://static.wooyun.org//drops/20160126/2016012610102713156329.png" alt="Alt text" /></p>

<h3>1.3 总结</h3>

<p>该方法简单粗暴高效，可以将捕获的数据包随时保存下来，便于后续分析或者进行 PCAP 可视化分析。</p>

<p>关于命令行工具 tshark 在此不做赘述，感兴趣的读者自行研究。</p>

<h1>0x02 基于 tcpdump</h1>

<hr />

<p><strong>实验环境：</strong></p>

<p>下载安装 Genymotion 安卓虚拟机，在该模拟器环境种进行实践操作（基于实体手机亦然，前提是<strong>手机必须得 ROOT</strong>）</p>

<p>笔者仅在 Android 系统下测试，未在 iOS 系统下实验</p>

<p><strong>实验步骤：</strong></p>

<h3>2.1 说明</h3>

<p>模拟器中自带的 tcpdump 工具，位于： /system/xbin/ 目录下</p>

<h3>2.2 数据包捕获</h3>

<p>可以通过 <code>adb shell</code> 命令在 CMD 模式下连接模拟器，<code>su</code> 到 root 模式进行抓包</p>

<pre><code>#!bash
tcpdump -vv -s 0 -i eth1 -w /sdcard/capture.pcap
</code></pre>

<p>参数说明：</p>

<ul>
<li>-vv：获取详细的包信息（注意是两个 v 不是 w）</li>
<li>-s 0：不限数据包的长度，如果不加则只获取包头</li>
<li>-w xxx.pcap：捕获数据包名称以及存储位置（本例中保存在 sdcard 路径下，数据包名为 capture.pcap）</li>
<li>-i eth1：捕获制定的网卡（在 genymotion 虚拟机中，使用 busybox ifconfig 命令可以查看相关信息，一般 genymotion 的 ip 地址都为 10.xx.xx.x）</li>
<li>如果你想指定捕获的数据包长度，可以使用 -c 参数（例如 -c 128）</li>
</ul>

<p>捕获结束，直接按 Ctrl + C 即可</p>

<h3>2.3 数据分析</h3>

<p>将捕获到的数据包拖到本地使用 Wireshark 进行查看：</p>

<pre><code>#!bash
adb pull /sdcard/capture.pcap C:\tmp
</code></pre>

<p><strong>TIPS：将数据包文件 push 到手机上命令为</strong></p>

<pre><code>#!bash
adb push C:\tmp\capture.pcap /sdcard/
</code></pre>

<h1>0x03 基于 Fiddler 4</h1>

<hr />

<p><strong>实验步骤：</strong></p>

<h3>3.1 下载 FIddler 4</h3>

<p><a href="https://www.telerik.com/download/fiddler">点击下载 Fiddler 4</a></p>

<h3>3.2 设置 Fiddler 4</h3>

<p>打开Fiddler，Tools-> Fiddler Options （配置完成记得重启 Fiddler）</p>

<p><img src="http://static.wooyun.org//drops/20160126/2016012610102978326433.png" alt="Alt text" /></p>

<p><img src="http://static.wooyun.org//drops/20160126/2016012610103138389526.png" alt="Alt text" /></p>

<h3>3.3 设置手机代理</h3>

<p>首先，获取安装 Fiddler 4 的 PC 对应的 IP 地址（ipconfig）：</p>

<p><img src="http://static.wooyun.org//drops/20160126/2016012610103294054622.png" alt="Alt text" /></p>

<p>确保手机和 PC 是连接在同一个局域网中！！！</p>

<p>下面对手机进行设置（笔者使用小米测试机）：点击手机中“设置”——Wi-Fi——选择已经连接的wifi——代理设置改为手动</p>

<p><img src="http://static.wooyun.org//drops/20160126/2016012610103478895721.png" alt="Alt text" /></p>

<p>下载 Fiddler 的安全证书</p>

<p>使用手机浏览器访问：<code>http://10.2.145.187:8888</code>，点击"FiddlerRoot certificate"，然后安装证书即可。</p>

<p>至此，已经全部设置完毕。</p>

<h3>3.4 数据包捕获</h3>

<p>重新打开 Fiddler 4，然后打开手机中的浏览器，访问任意网址，Fiddler 抓包信息如下：</p>

<p><img src="http://static.wooyun.org//drops/20160126/2016012610103517901819.png" alt="Alt text" /></p>

<p>Enjoy！</p>

<h1>0x04 基于 Charles</h1>

<hr />

<p><strong>实验环境：</strong></p>

<p>win7 + Charles v3.11</p>

<p>一般使用 Charles 都是基于 MAC OS ，笔者在 mac 平台以及 windows 平台均试验过，操作过程和思路基本一致，因此，本文以 win7 为测试环境</p>

<p><strong>实验步骤：</strong></p>

<h3>4.1 捕获 http 数据包</h3>

<p>手机设置代理：</p>

<p><img src="http://static.wooyun.org//drops/20160126/2016012610103478895721.png" alt="Alt text" /></p>

<p>打开 Charles 即可捕获数据包（Proxy —— Proxy Settings）：</p>

<p><img src="http://static.wooyun.org//drops/20160126/2016012610103736840919.png" alt="Alt text" /></p>

<p><img src="http://static.wooyun.org//drops/20160126/20160126101038230441021.png" alt="Alt text" /></p>

<h3>4.2 捕获 https 数据包</h3>

<p>手机端安装证书：</p>

<p>Android 手机或者 iPhone 均可直接访问 <a href="http://www.charlesproxy.com/ssl.zip">http://www.charlesproxy.com/ssl.zip</a> ，然后根据图示点击证书安装</p>

<p><img src="http://static.wooyun.org//drops/20160126/20160126101040434711124.png" alt="Alt text" /></p>

<p><img src="http://static.wooyun.org//drops/20160126/20160126101041137611218.png" alt="Alt text" /></p>

<p><img src="http://static.wooyun.org//drops/20160126/20160126101043651951317.png" alt="Alt text" /></p>

<p>设置 Charles：</p>

<p>选择 Proxy —— SSL Proxying Settings —— Locations —— Add</p>

<p>在弹出的表单中填写 Host 域名（也就是你想要抓包链接的主机名），以及对应的 Port 端口（此处相当于过滤作用）</p>

<p>当然，你可以采用更加粗暴的方式：使用通配符，例如你想要捕获所有的 https 包，这里也可以直接都为空，表示捕获所有的主机和端口；或者都分别填“*”星号，匹配所有的字符，捕获所有的 https。</p>

<p><img src="http://static.wooyun.org//drops/20160126/20160126101045729851415.png" alt="Alt text" /></p>

<p><img src="http://static.wooyun.org//drops/20160126/20160126101047212631514.png" alt="Alt text" /></p>

<p><img src="http://static.wooyun.org//drops/20160126/20160126101048621211612.png" alt="Alt text" /></p>

<h1>0x05 基于 Burpsuite</h1>

<hr />

<p><strong>实验步骤：</strong></p>

<h3>5.1 捕获 http 数据包</h3>

<p>PC 端 Burpsuite 设置：</p>

<p><img src="http://static.wooyun.org//drops/20160126/20160126101050833941710.png" alt="Alt text" /></p>

<p>手机端代理设置方法同以上 3.3 4.1</p>

<p>打开 Burpsuite 即可捕获 http 数据包：</p>

<p><img src="http://static.wooyun.org//drops/20160126/2016012610105279485188.png" alt="Alt text" /></p>

<h3>5.2 捕获 https 数据包</h3>

<p>手机端设置好代理之后，使用浏览器访问：<code>http://burp/</code></p>

<p><img src="http://static.wooyun.org//drops/20160126/2016012610105373961196.png" alt="Alt text" /></p>

<p><img src="http://static.wooyun.org//drops/20160126/2016012610105439184206.png" alt="Alt text" /></p>

<p>此处存在一个问题：下载的证书是 der 格式的，我们手机端安装的是 crt 格式的，需要使用 firefox 浏览器转一下格式：可以首先在 Brupsuite 中导出 der 格式证书，然后导入火狐浏览器，然后从火狐浏览器导出证书格式为 crt</p>

<p><img src="http://static.wooyun.org//drops/20160126/20160126101056190972113.png" alt="Alt text" /></p>

<p>打开火狐浏览器：工具——选项——高级——证书——查看证书</p>

<p><img src="http://static.wooyun.org//drops/20160126/20160126101057178422212.png" alt="Alt text" /></p>

<p><img src="http://static.wooyun.org//drops/20160126/20160126101059356972310.png" alt="Alt text" /></p>

<p><img src="http://static.wooyun.org//drops/20160126/2016012610110191543248.png" alt="Alt text" /></p>

<p>成功捕获 https 数据包</p>

<p><img src="http://static.wooyun.org//drops/20160126/2016012610110212505256.png" alt="Alt text" /></p>

<h1>0x06 总结</h1>

<hr />

<ul>
<li><p>当我们停止捕获数据包时，将Fiddler 或 Charles 关闭，此时手机端是无法正常访问网络的，因为设置了代理，这时候需要将代理关闭，即可正常浏览网页</p></li>
<li><p>对于大多数走代理的应用可以选择 Fiddler 或 Charles，无需 root，一次配置，终身使用；对于不走代理的 App 可以利用 tcpdump 捕包，然后使用 Wireshark 查看；最简单便捷的便是第一种方法<strong>「0x01. 基于 Wireshark」</strong></p></li>
<li><p>以上所有工具各有优劣，读者可以根据工作环境，按需使用，个人觉得一般情况下使用 Wireshark + Fiddler 或者 Wireshark + Charles 即可完成各平台的抓包分析任务</p></li>
<li><p>以上工具中只有BurpSuite可以对抓包过程进行交互式操作；Wireshark支持的协议最多，也更底层，功能强大，但过于沉重</p></li>
<li><p>对于本文涉及的相关工具的安装、设置、破解、详细使用，不在本文讨论范围之内（Charles 免费版其实还比较厚道，如果重度需要，建议购买正版），本文旨在浅析捕获移动终端数据包的方法和思路</p></li>
</ul>

<h1>0x07 参考文献</h1>

<hr />

<ol>
<li><a href="http://blog.csdn.net/jiangwei0910410003/article/details/19806999">抓包工具Fidder详解</a></li>
<li><a href="http://blog.csdn.net/jiangwei0910410003/article/details/41620363">Mac上的抓包工具Charles</a></li>
<li><a href="http://blog.csdn.net/chenyufeng1991/article/details/50370248">网络抓包工具Charles的介绍与使用</a></li>
<li><a href="http://drops.wooyun.org/tips/2423">charles使用教程指南</a></li>
<li><a href="http://my.oschina.net/cve2015/blog/545832">Android安全测试之BurpSuite抓包</a></li>
<li><a href="http://www.trinea.cn/android/tcpdump_wireshark/">Android利用tcpdump和wireshark抓取网络数据包</a></li>
</ol>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          